/*
 * @Author: WuFeng <763467339@qq.com>
 * @Date: 2022-03-22 12:12:49
 * @LastEditTime: 2023-06-06 16:09:11
 * @LastEditors: WuFeng <763467339@qq.com>
 * @Description: 代码生成模块
 * @FilePath: \vue3-element-plus-web\src\store\modules\genderCode.js
 * @Copyright 版权声明
 */
import {
  getTableInfo
} from '@/api/SysManage/genderCode'

const user = {
  state: {
    // 选择的表集合
    tableRowSet: [],
    // 模块配置信息
    moduleInfo: {
      // 模块中文名称
      title: '',
      // 模块名称
      MODULE_VALUE: '',
      // 择取的字段
      column: []
    },
    // 当前正在配置的字段的下标， 对应 moduleInfo.column[settingColumnIndex]
    settingColumnIndex: ''
  },

  mutations: {
    // 选择的表集合
    SET_TABLE_ROW_SET: (state, data) => {
      state.tableRowSet = data
    },
    // 模块配置信息
    SET_MODULE_INFO: (state, data) => {
      state.moduleInfo = data
    },
    // 模块配置信息 - 择取的字段
    SET_MODULE_INFO_COLUMN: (state, data) => {
      state.moduleInfo.column = data
    },
    // 当前正在配置的字段的下标， 对应 moduleInfo.column[settingColumnIndex]
    SET_SETTING_COLUMN_INDEX: (state, index) => {
      state.settingColumnIndex = index
    }
  },

  actions: {
    // 设置选择的表集合
    SetTableRowSet({ commit, state }, data) {
      commit('SET_TABLE_ROW_SET', data)
    },
    // 获取选择的表的表信息
    async GetTableRowSetInfo({ commit, state }, data) {
      return new Promise((resolve, reject) => {
        getTableInfo(state.tableRowSet).then(res => {
          const resData = res.data || []
          commit('SET_TABLE_ROW_SET', resData)

          // 初始化 模块配置信息
          const initModuleInfo = {}
          if (resData.length === 1) {
            // 模块中文名称
            initModuleInfo.title = resData[0].comment
            // 模块名称
            initModuleInfo.MODULE_VALUE = resData[0].name
            // 择取的字段
            initModuleInfo.column = []
          } else {
            // 模块中文名称
            initModuleInfo.title = ''
            // 模块名称
            initModuleInfo.MODULE_VALUE = ''
            // 择取的字段
            initModuleInfo.column = []
          }
          commit('SET_MODULE_INFO', initModuleInfo)
          resolve(resData)
        })
      })
    },
    // 设置 模块配置信息 择取的字段
    SetModuleInfoColumn({ commit }, data) {
      commit('SET_MODULE_INFO_COLUMN', data)
    },
    // 设置 当前正在配置的字段的下标， 对应 moduleInfo.column[settingColumnIndex]
    SetSettingColumnIndex({ commit }, index) {
      commit('SET_SETTING_COLUMN_INDEX', index)
    },
    // 自定义生成代码
    GenderCodeCustom({ commit, state }) {
      return new Promise((resolve, reject) => {
        resolve()
        // getInfo(state.token)
        //   .then((response) => {
        //     const data = response.data
        //     commit('SET_NAME', data.name)
        //     resolve(response)
        //   })
        //   .catch((error) => {
        //     reject(error)
        //   })
      })
    }
  }
}

export default user
